package cn.tedu.stage2.exception;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * JDK7之后，java推出了一个新的特性:Autocloseable，自动关闭特性。
 * 旨在解决异常处理机制中繁琐的关闭流操作。
 */
public class AutoCloseableDemo {
    public static void main(String[] args) {
        /*
            新语法特性要求我们将需要在finally中调用close关闭的哪些对象在try的()中
            定义并初始化即可。编译器在编译时会自动补充finally并调用close方法关闭它们
            还原后的代码可参考FinallyDemo2的样子。
            try的()中只能定义并初始化哪些实现了Autocloseable接口的类。
            所有的流都实现了该接口。
         */
        try(
                FileOutputStream fos = new FileOutputStream("fos.dat");
        ){
            fos.write(1);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
